package com.clps.algorithm.chapter08.从根结点到叶结点的路径数字之和;

import com.clps.algorithm.chapter07.二叉树每层的最大值.TreeNode;

/**
 * 在一个二叉树里所有结点都在0-9的范围之类，从根结点到叶结点的路径表示一个数字。
 * 求二叉树里所有路径表示的数字之和。例如在图8.4中的二叉树有三条从根结点到叶结点的路径，它们分别表示数字395、391和302，这三个数字之和是1088。
 *
 * 图8.4：一个从根结点到叶结点的路径分别表示数字395、391和302的二叉树。
 */
public class demo01 {
    public static void main(String[] args) {

    }

    public int sumNumbers(TreeNode root){
        return  dfs(root,0);
    }

    private int dfs(TreeNode root, int path) {
        if(root == null){
            return  0;
        }

        path = path * 10 +root.val;
        if(root.left == null &&root.right == null){
            return  path;
        }

        return  dfs(root.left,path)+dfs(root.right,path);
    }


}
